// 把当前目录下的文件夹里所有index.js引入
const Modules = require.context("./", true, /index.js$/);

const ApiList = {};

Modules.keys().forEach(key => {
    if(key === './index.js') return;

    let mod = {};

    // 获取文件夹名称
    let name = key.replace(/\.\/(.*)\/index.js/, "$1");

    mod[name] = Modules(key).default;
    
    Object.assign(ApiList,mod);

})

const install = (Vue, vm) => {
    // 加载Api
    ApiList;

    let Api = {};

    for(let name in ApiList)
    {
        if(JSON.stringify(ApiList[name]) === '{}') continue;

        for(let ApiName in ApiList[name])
        {
            let config = ApiList[name][ApiName];

            config.name = ApiName;

            if(!config.name || !config.url) continue;

            if(!Api[name])
            {
                Api[name] = {};
            }

            switch (config.method.toUpperCase()) {
                case 'GET':
                    Api[name][config.name] = (data = {}) => {
                        return uni.$u.http.get(config.url,{params:data});
                    }
                    break;

                case 'POST':
                    Api[name][config.name] = (data = {}) => {
                        return uni.$u.http.post(config.url,data);
                    }
                    break;
            
                case 'UPLOAD':
                    Api[name][config.name] = (data = {}) =>
                    {
                        if(data.filePath)
                        {
                            return uni.$u.http.upload(config.url,data);
                        }else{
                            return uni.$u.http.post(config.url,data);
                        }
                    }
                    break;
            }
        }
    }

    vm.$u.api = Api;
}

export default{
    install
}